package com.company.jvm.abstractclass;

/**
 * @author ylr
 * @version 1.0.0
 * @ClassName PersonInterface.java
 * @Description TODO
 * @createTime 2021年12月04日 18:59:00
 */

//一个接口可以extends多个接口  一个类可以实现多个接口；
public interface PersonInterface extends person1,person2{
    public static final int variable=1;//接口可以包含变量,隐式的指定为public static final

    public abstract void run ();//包含抽象方法 隐式指定为public abstract

//    protected abstract void run1();

    //子类必须重写默认方法
    default void run2(){
        //定义了default的方法可以不被实现子类所实现，
        // 但只能被实现子类的对象调用；
        // 如果子类实现了多个接口，
        // 并且这些接口包含一样的默认方法，则子类必须重写默认方法
        System.out.println("1.8可以包含默认方法,具有方法体");

        PersonInterface.run3();//接口静态方法只能通过接口调用（接口名.静态方法名）
    }

    //JDK 1.8中允许使用static关键字修饰一个方法
    static void run3(){
        System.out.println("接口静态方法。接口静态方法只能通过接口调用（接口名.静态方法名）。");
    }
}

interface person1{
    default void run2() {
        System.out.println("1");
    }
}
interface person2{
    default void run2() {
        System.out.println("2");
    }
}
